ES6 (ECMAScript 6) কি?
ES6 (অথবা ECMAScript 2015) হল JavaScript-এর একটি সংস্করণ, যা বেশ কিছু নতুন ফিচার নিয়ে আসে যা ওয়েব ডেভেলপমেন্টকে আরও সহজ, পরিষ্কার এবং শক্তিশালী করে তোলে। ES6-এর ফিচারগুলি কোডকে আরও বেশি কার্যকর, রিডেবল, এবং মডুলার করে তোলে। এটি JavaScript এর আগের সংস্করণের তুলনায় অনেক উন্নত এবং ব্যবহারকারীদের কোডিং অভিজ্ঞতা আরও স্বাচ্ছন্দ্যপূর্ণ করেছে।
ES6 এর পর আরও বেশ কিছু সংস্করণ বের হয়েছে, যেমন ES7, ES8, ES9, ES10, ES11 ইত্যাদি, যেগুলি আরও কিছু নতুন ফিচার যোগ করেছে। এখানে ES6 এবং পরবর্তী কিছু সংস্করণের গুরুত্বপূর্ণ ফিচারগুলো আলোচনা করা হবে।
ES6 এর প্রধান ফিচারস
১. let এবং const:
ES6 এর আগে JavaScript-এ কেবল var ছিল যা ভেরিয়েবল ডিক্লেয়ার করার জন্য ব্যবহৃত হত। তবে let এবং const দুটি নতুন কিওয়ার্ড এসকল ভেরিয়েবলের স্কোপ এবং মিউটেবিলিটি নিয়ন্ত্রণ করে।
- let: ব্লক-স্কোপড ভেরিয়েবল ডিক্লেয়ার করতে ব্যবহৃত হয়।
- const: কনস্ট্যান্ট ভেরিয়েবল ডিক্লেয়ার করতে ব্যবহৃত হয়, যার মান পরে পরিবর্তন করা যায় না।
let age = 30; // let - variable with block scope
const name = 'John'; // const - constant value
২. আরে (Arrow) ফাংশন:
Arrow function ES6 এর একটি নতুন ফাংশন সিনট্যাক্স, যা সাধারণ ফাংশনের তুলনায় কম কোডে লেখা যায় এবং এটি this কিওয়ার্ডের আচরণ পরিবর্তন করে।
// Traditional function
const add = function(a, b) {
return a + b;
};
// Arrow function
const add = (a, b) => a + b;
৩. Template Literals:
Template literals আপনাকে স্ট্রিং ইনটারপোলেশন করতে সাহায্য করে, অর্থাৎ, ভেরিয়েবল ও এক্সপ্রেশন সরাসরি স্ট্রিংয়ে বসিয়ে দেওয়া যায়।
let name = 'Alice';
let age = 25;
let greeting = `Hello, my name is ${name} and I am ${age} years old.`;
৪. ডিফল্ট প্যারামিটার (Default Parameters):
ফাংশন প্যারামিটারকে ডিফল্ট মান দেওয়া যায়, যদি কোন প্যারামিটার পাস না করা হয়।
function greet(name = 'Guest') {
console.log(`Hello, ${name}!`);
}
greet(); // Output: Hello, Guest!
greet('Alice'); // Output: Hello, Alice!
৫. ডেস্ট্রাকচারিং (Destructuring):
Destructuring আপনার কোডে অযথা ভেরিয়েবল নির্ধারণ থেকে মুক্তি দেয়। এটি অ্যারে বা অবজেক্ট থেকে ডেটা বের করতে ব্যবহৃত হয়।
// Object Destructuring
const person = { name: 'John', age: 30 };
const { name, age } = person;
// Array Destructuring
const numbers = [1, 2, 3];
const [first, second] = numbers;
৬. স্প্রেড অপারেটর (Spread Operator):
স্প্রেড অপারেটর ... ব্যবহৃত হয় অ্যারে বা অবজেক্টের কন্টেন্টকে অন্য কোনো অ্যারে বা অবজেক্টে কপি করার জন্য।
const arr1 = [1, 2, 3];
const arr2 = [...arr1, 4, 5]; // Spread the elements of arr1 into arr2
৭. পমিস (Promises):
Promises ব্যবহারকারীদের অ্যাসিঙ্ক্রোনাস কোড পরিচালনা করতে সহায়তা করে, এবং এটি callback হেল (callback hell) থেকে মুক্তি দেয়।
let promise = new Promise((resolve, reject) => {
let success = true;
if(success) {
resolve("Success!");
} else {
reject("Failure!");
}
});
promise.then((message) => {
console.log(message);
}).catch((message) => {
console.log(message);
});
৮. ক্লাসেস (Classes):
ES6-এ ক্লাস পদ্ধতি প্রবর্তিত হয়েছে, যা অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিং (OOP) এর জন্য ব্যবহার করা হয়। এটি ফাংশনাল প্রোগ্রামিংয়ের তুলনায় কোডকে আরও পরিষ্কার এবং সুশৃঙ্খল করে।
class Person {
constructor(name, age) {
this.name = name;
this.age = age;
}
greet() {
console.log(`Hello, my name is ${this.name}`);
}
}
const person = new Person('John', 30);
person.greet(); // Output: Hello, my name is John
ES7 এবং পরবর্তী সংস্করণের ফিচার
১. ES7 (ECMAScript 2016):
Exponentiation Operator (
**): এক্সপোনেনশিয়াল অপারেটর, যা শক্তির অপারেশনকে আরও সহজ করে তোলে।let result = 2 ** 3; // 8
২. ES8 (ECMAScript 2017):
Async/Await: অ্যাসিঙ্ক্রোনাস কোডকে সহজভাবে লিখতে ব্যবহৃত হয়। এটি promises ব্যবহারের চেয়ে পরিষ্কার এবং সহজ।
async function fetchData() { let data = await fetch('https://api.example.com/data'); console.log(data); }Object.entries() এবং Object.values(): এগুলি অবজেক্ট থেকে কীগুলোর তালিকা (entries) বা মানগুলির তালিকা (values) প্রদান করে।
const obj = { name: 'Alice', age: 25 }; console.log(Object.entries(obj)); // [['name', 'Alice'], ['age', 25]] console.log(Object.values(obj)); // ['Alice', 25]
৩. ES9 (ECMAScript 2018):
Rest/Spread for Objects: অবজেক্টে স্প্রেড অপারেটর ব্যবহার করার সুবিধা পাওয়া যায়।
const person = { name: 'John', age: 30 }; const updatedPerson = { ...person, age: 31 }; console.log(updatedPerson); // { name: 'John', age: 31 }Asynchronous Iteration:
for-await-ofলুপ ব্যবহার করে অ্যাসিঙ্ক্রোনাস ডেটার উপর ইটারেট করা যায়।async function fetchData() { const data = [1, 2, 3]; for await (let item of data) { console.log(item); } } fetchData();
৪. ES10 (ECMAScript 2019):
Array.prototype.flat(): অ্যারে ফ্ল্যাট করা হয়, যা ভিতরের অ্যারেগুলির উপাদানগুলোকে একটি একক অ্যারেতে পরিণত করে।
const arr = [1, [2, 3], [4, 5]]; const flatArr = arr.flat(); console.log(flatArr); // [1, 2, 3, 4, 5]Object.fromEntries(): কীগুলি এবং মানের তালিকা থেকে একটি নতুন অবজেক্ট তৈরি করতে ব্যবহৃত হয়।
const entries = [['name', 'Alice'], ['age', 25]]; const obj = Object.fromEntries(entries); console.log(obj); // { name: 'Alice', age: 25 }
৫. ES11 (ECMAScript 2020):
Nullish Coalescing Operator (??): এটি
nullবাundefinedচেক করতে ব্যবহৃত হয়, আর সাধারণত||অপারেটরের মতো কাজ করে তবে আরও নির্দিষ্ট।let name = null; let defaultName = name ?? 'Guest'; console.log(defaultName); // Output: 'Guest'Optional Chaining (?.): এটি অবজেক্টের নেস্টেড প্রপার্টি অ্যাক্সেস করতে ব্যবহৃত হয়, যদি কোনো প্রপার্টি
nullবাundefinedহয় তবে তা ত্রুটি সৃষ্টি না করেundefinedরিটার্ন করবে।const person = { name: 'Alice' }; console.log(person.address?.street); // undefined, no error
সারাংশ
ES6 এবং পরবর্তী ECMAScript সংস্করণ JavaScript কে আরও শক্তিশালী এবং সহজ করে তোলে। ES6 তার বিভিন্ন নতুন ফিচারের মাধ্যমে কোডকে আরও পরিষ্কার, সহজ এবং কার্যকর করে তোলে। ES7, ES8, ES9, ES10 এবং ES11 আরও অনেক সুবিধাজনক ফিচার নিয়ে এসেছে, যেমন async/await, Object.entries(), nullish coalescing, optional chaining, যা কোডিং অভিজ্ঞতা আরো উন্নত করেছে। এই নতুন ফিচারগুলোর মাধ্যমে ডেভেলপাররা আরও দ্রুত এবং কার্যকরীভাবে কোড লিখতে পারেন।
Read more